package com.sc.nft.entity.vo;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
public class BrandMarketDetailsVO {

    @ApiModelProperty("拥有的藏品id")
    private Long collectionId;

    @ApiModelProperty("类目ID")
    private Long configId;

    @ApiModelProperty("一级标题")
    private String firstTitle;

    @ApiModelProperty("售卖数量")
    private Integer productCount;

    @ApiModelProperty("系列名称")
    private String catenaName;

    @ApiModelProperty("作者昵称")
    private String nickName;

    @ApiModelProperty("作者头像")
    private String creatorAvatarImg;

    @ApiModelProperty("详情页图")
    private String productDetailPicture;

    @ApiModelProperty("详情页图类型 1 图片 2:动图 3:3d模型")
    private Integer productDetailPictureType;

    @ApiModelProperty("产品介绍")
    private String productPresentation;

    @ApiModelProperty("权益介绍")
    private String privilegePresentation;

    @ApiModelProperty("3d模型id")
    private String threeModelId;

    @ApiModelProperty("缩略图")
    private String creationContent;

    @ApiModelProperty("销售金额")
    private String salesPrice;

    @ApiModelProperty("3D模型贴图")
    private String modelImg;

    @ApiModelProperty("3D模型距离")
    private String modelDistance;

    @ApiModelProperty("跳转详情")
    private String skipUrl;

    @ApiModelProperty("起始价格")
    private String startPrice;

    /**
     * 这个字段在5.0开始不在使用,当前存在的意义是为了给曾经的版本做兼容使用,大概4-5个大版本后可以彻底移除,未来使用的时候,这个字段不在作用.
     * 该描述仅针对当前的接口功能,并非舍弃整个数据表结构实体类的字段.
     */
    @ApiModelProperty("增长率")
    @Deprecated
    private String upRatio;

    @ApiModelProperty("增长率")
    private String upRatioNew;

    @ApiModelProperty("开始时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty("寄售规则")
    private String consignExplanation;

    @ApiModelProperty("是否锁仓")
    private Boolean isLockedPosition;

    @ApiModelProperty("锁仓描述")
    private String lockedPositionDescribe;

    @ApiModelProperty("锁仓类型 0:省缺 1:时间模式 2:日期形式 时间模式是获取藏品后延后多久,日期形式是统一锁到对应的时间")
    private Integer lockedPositionType;

    @ApiModelProperty("锁仓市场小时")
    @JsonIgnore
    private Integer lockedPositionHour;

    @ApiModelProperty("锁仓到期日期")
//    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonIgnore
    private Date lockedPositionTime;


    public void setLockedPositionDescribe() {
        // 在是锁仓的情况下,根据类型进行描述
        if (this.isLockedPosition) {
            // 时间模式
            if (this.lockedPositionType.equals(1)) {
                if (this.lockedPositionHour != null) {
                    // 当时间不为空的时候,那么要把时间/24  把他变成几天几小时
                    int day = this.lockedPositionHour / 24;
                    int hour = this.lockedPositionHour % 24;
                    if (day > 0 && hour > 0) {
                        this.lockedPositionDescribe = StrUtil.format("冷却时间: {}天{}小时", day, hour);
                    } else if (day > 0 && hour == 0) {
                        this.lockedPositionDescribe = StrUtil.format("冷却时间: {}天", day);
                    } else if (day == 0 && hour > 0) {
                        this.lockedPositionDescribe = StrUtil.format("冷却时间: {}小时", hour);
                    }
                }
            }
            if (this.lockedPositionType.equals(2)) {
                if (this.lockedPositionTime != null) {
                    // 如果当前时间大于锁仓截止时间.那么就把是否锁仓设置为false
                    if (this.lockedPositionTime.getTime() < System.currentTimeMillis()) {
                        this.isLockedPosition = false;
                        this.lockedPositionDescribe = "冷却已到期";
                    } else {
                        this.lockedPositionDescribe = StrUtil.format("冷却结束时间: {}", DateUtil.format(this.lockedPositionTime, "yyyy-MM-dd HH:mm:ss"));
                    }
                }
            }
        }
    }
}
